// 封装具体接口请求的方法，每个方法只负责请求一个url地址
//引入store对象
import request from '@/utils/request'  // 引入自定也axios函数
//导出接口方法，为了在逻辑页面引入后调用
// {}中的值既是value值也是key值

/**
 * 
 * @param {*} param0 username:用户名 password:密码
 * @returns 
 */
export const registerAPI = ({ username, password, repassword }) => {
    // 原地是一个promis对象
    // return 这个promise对象到逻辑页面，去那边对promise对象进行提取
    return request({
        url: '/api/reg',
        method: 'POST',
        //axios传参有两种：params,data
        // params的对象参数名和值，axios源码会把参数和值拼接在url?后面给后台(一般为query查询字符串)
        // data的对象参数名和值，axios源码会把参数和值拼接在请求体里(一般为body参数)
        data: {
            username,
            password,
            repassword
        }
    })
}
/**
 * JSdoc注释
 * 登陆接口
 * @param {*} param0 {username:用户名，password:密码}
 * @returns promise对象
 */

export const loginAPI = ({ username, password }) => {
    return request({
        url: '/api/login',
        method: 'POST',
        data: {
            username,
            password
        }
    })
}

/**
 * 用户信息
 * @returns promis对象
 */
export const getUserInfoAPI = () => {
    return request({
        url: '/my/userinfo',
        //method不写默认get方式请求
        // 传参给后台3种方式：1.params(查询字符串query)，data(请求体body),3.header(请求头)
        // headers: {
        //     Authorization: store.state.token //通过调用store获得token
        // }
    })
}

/**
 * 侧边栏数据
 * @returns promis对象
 */
export const getMenusAPI = () => {
    return request({
        url: '/my/menus',
        // headers: {
        //     Authorization: store.state.token
        // }
    })
}
/**
 * 跟新用户基本资料
 * @returns promis对象 {id:用户ID，username：用户名，nickname：用户昵称，email：邮箱，user_pic：用户头像地址}
 */
export const updateUserInfoAPI = ({ id, username, nickname, email, user_pic }) => {
    return request({
        url: '/my/userinfo',
        method: 'PUT',
        data: {
            id,
            username,
            nickname,
            email,
            user_pic
        }
    })
}
/**
 * 更新用户头像
 * @param {*} avatar 
 * @returns 
 */
export const updateAvatarAPI = (avatar) => {
    return request({
        url: '/my/update/avatar',
        method: 'PATCH',
        data: {
            avatar
        }
    })
}
export const updatePwdAPI = ({ old_pwd, new_pwd, re_pwd }) => {
    return request({
        url: '/my/updatepwd',
        method: 'PATCH',
        data: {
            old_pwd,
            new_pwd,
            re_pwd
        }
    })
}
/**
 * 获取文章分类
 * @returns 
 */
export const getArtCateListAPI = () => {
    return request({
        url: '/my/cate/list',
        method: 'GET'

    })
}
/**
 * 新增文章分类
 * @param {*} param0 cate_name：文章分类名字 ; cate_alias：文章分类别名
 * @returns 
 */
export const addArtCateAPI = ({ cate_name, cate_alias }) => {
    return request({
        url: '/my/cate/add',
        method: 'POST',
        data: {
            cate_name,
            cate_alias
        }
    })
}

/**
 * 修改文章分类
 * @param {*} param0 id:文章分类id,cate_name:文章分类名字，cate_alias：文章分类别名
 * @returns 
 */
export const updateArtCateAPI = ({ id, cate_name, cate_alias }) => {
    return request({
        url: '/my/cate/info',
        method: 'PUT',
        data: {
            id,
            cate_name,
            cate_alias
        }
    })
}
/**
 * 删除分类
 * @param {*} id 
 * @returns 
 */
export const delArtCateAPI = (id) => {
    return request({
        url: '/my/cate/del',
        method: 'DELETE',
        params: {
            id
        }
    })
}

/**
 * 发布文章
 * @param {*} fd 
 * @returns 
 */
export const uploadArticleAPI = (fd) => {
    return request({
        url: '/my/article/add',
        method: 'POST',
        //参数要的是表单对象，不能写普通对象，axios内部会判断，如果是表单对象
        //传递的请求体会设置Content-type:from-data与后端对应
        data: fd
    })
}
/**
 *  //获取文章列表
 * @param {*} param0 
 * @returns 
 */
export const getArticleListAPI = ({ pagenum, pagesize, cate_id, state }) => {
    return request({
        url: '/my/article/list',
        params: {
            pagenum,
            pagesize,
            cate_id,
            state
        }
    })
}
/**
 * 获取文章详情
 * @param {*} id 
 * @returns 
 */
export const getArticleDetailAPI = (id) => {
    return request({
        url: '/my/article/info',
        params: {
            id
        }
    })
}

export const delArticleAPI = (id) => {
    return request({
        url: "/my/article/info",
        method: 'DELETE',
        params: {
            id
        }
    })
}